home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1992-08-30 | 10.4 KB | 412 lines |
- Hide
- Dim BANKFELD$(4),SH(14,6)
- Global BANK
- BANKSPACE=50000
- ALLESLOESCHEN
- Screen Open 0,128,8,2,0 : Screen Hide 0
- '
- Screen Open 2,320,56,4,0
- Curs Off : Flash Off : Pen 1 : Paper 0 : Cls 0
- Palette 0,0,0
- Gr Writing 0
- Screen Display 2,128,251,,
- '
- Load "Title.mus",3
- Erase 1 : Load "Sprites1.dat",1
- Music 1 : Wait 150
- Gosub ERDE
- Gosub BODENSTATION
- Gosub INVADE
- Erase 1 : Load "Sprites2.dat",1
- Gosub STADTZOOM
- Erase 1 : Load "Sprites3.dat",1
- Gosub STADT
- Gosub STADTDESTROYED
- Screen Close 0 : Screen Close 2
- ALLESLOESCHEN
- Erase 1
- Erase 3
- End
- ERDE:
- Wait Vbl : BANKLADEN["020Erde.pic"]
- Unpack BANK To 1 : Screen Hide 1
- Screen 0 : Get Palette 1 : Screen 1
- For A=0 To 31 : Colour A,0 : Next : Screen Show 1
- Sprite 0,-40,-40,1
- A$="L R0=2000; L R1=1; L R2=-110; L R3=20; "
- A$=A$+"A: L R0=R0+R2; L R1=R1+R3; L R2=R2+1;"
- A$=A$+"L X=R0/100+268+160-RA; L Y=R1/100+67; P; "
- A$=A$+"I R2>100 J B; I R0>20000 J C; J A; "
- A$=A$+"B: L R2=100; I R0>20000 J C; J A; "
- A$=A$+"C: L R0=20000; J A;"
- Channel 0 To Sprite 0
- Amal 0,A$
- A$="F RA=0 T 159; L X=X+1; N RA; "
- Channel 2 To Screen Offset 1
- Amal 2,A$
- Double Buffer
- Bob 2,335,52,3
- Bob 1,-20,-20,2
- A$="L X=335; L Y=52; A: L X=X-1; P; I X>-20 J A; "
- Channel 1 To Bob 1 : Amal 1,A$
- Sprite 4,250,100,11
- A$="F R0=0 To 200; N R0; "
- A$=A$+" A 1,(6,5)(7,5)(8,5)(9,5)(10,20)(9,5)(8,5)(7,5)(6,5)(11,1); "
- Channel 3 To Sprite 4
- Amal 3,A$
- A$="F R0=0 T 159; L X=X-1; P; L RA=159-R0; N R0; "
- Fade 2 To 0 : Wait 35
- Screen 2 : Screen To Front 2
- Locate 0,2 : TEX["DER WELTRAUM - UNENDLICHE WEITEN"]
- Fade 2,0,$55D,$FFF
- Wait 183 : Amal On 0 : Wait 50
- Fade 2 : Amal On 2 : Amal On 3 : Wait 32
- Cls 0 : Locate 0,2 : TEX["WIR SCHREIBEN DAS JAHR 2038"]
- Fade 2,0,$55D,$FFF
- Wait 232 : Fade 2 : Wait 32 : Cls 0
- Home : TEX["EINE GRUPPE WISSENSCHAFTLER VERL��T DIE"] : Print : Print
- TEX["ERDE, UM EINIGE GEN EXPERIMENTE IM"] : Print : Print
- TEX["WELTRAUM DURCHZUF�HREN."]
- Fade 2,0,$55D,$FFF : Wait 32
- Screen 1
- Amal On 1
- Amal 2,A$
- Wait 50 : Amal On 2 : Wait 10 : Amal Off 0
- Amal Off 3
- Wait 260 : Screen 2 : Fade 2 : Wait 50
- Screen 1 : Amal Off 1 : Bob Off
- Fade 3 : Wait 49
- Amal Off 0 : Sprite Off 0 : Screen Close 1
- Return
- '
- '
- BODENSTATION:
- BANKLADEN["000Bodenstation.pic"]
- Wait Vbl : Unpack BANK To 1 : Screen Hide 1
- Screen 0 : Get Palette 1
- Colour 18,$50
- Screen 1
- Double Buffer : Autoback 0
- Bob Update Off
- For A=0 To 31 : Colour A,0 : Next : Screen Show 1
- Screen 2
- Cls 0 : Home : Print : TEX["F�NF JAHRE SP�TER..."]
- Screen 1
- Fade 3 To 0
- Degree
- X=0 : Y=0 : A=120 : R=30
- W=0
- Get Block 1,96,143,80,46
- Sprite 1,268,200,76
- AN=12
- AN2=0
- AN3=0
- SP=68
- Do
- If A=44 Then Colour 18,$BFB
- If A=52 and W<246 Then Fade 10,,,,,,,,,,,,,,,,,,,$50
- If W=220 Then Fade 4,,,$F88,$D77,$C66,$A55,$844,$633,$522,$311,$F50,$D30,$A10,$800
- If W=222 or W=224 Then Dec SP
- If W=226 Then Bob Off 2 : Bob Off 3 : Bob Off 4 : Bob Off 5 : Bob Off 6 : SP=0
- If W=230 Then Fade 4,,,0,0,0,0,0,0,0,0,0,0,0,0
- If W=246 or W=247
- Ink 0 : Bar 0,96 To 95,123 : Bar 224,96 To 319,123
- Bar 112,96 To 199,118
- Paste Bob 104,96,77
- Sprite Off 1 : Paste Bob 0,96,66 : Paste Bob 224,96,67
- End If
- If W=248 Then Fade 1 To 0
- Inc W
- If W=160 or W=165 Then Inc SP
- If W>170 and Rnd(10)=1 Then AN3=Min(AN3+1,5)
- If W=20 or W=210 Then Screen 2 : Fade 2,0,$55D,$FFF : Screen 1
- If W=195 or W=340 Then Screen 2 : Fade 2 : Screen 1
- If W=358 Then Fade 3
- If W=205 Then Screen 2 : Cls 0 : Home : TEX["VERSCHWINDEN DIE RAUMSCHIFFE"] : Screen 1
- If W=206 Then Screen 2 : Print : Print : TEX["VON DEN BILDSCHIRMEN! NIEMAND"] : Screen 1
- If W=207 Then Screen 2 : Print : Print : TEX["WEISS, WAS MIT DER CREW GESCHEHEN IST."] : Screen 1
- If W=370 Then Exit
- AN=Min(AN,64)
- Add AN,1,12 To 25-40*(SP=0)
- Add AN2,1,0 To 1
- Add A,4,0 To 356
- Bob 1,232,148,AN
- If SP>0
- Bob 2,15,108,SP+AN2
- Bob 3,37,108,SP+AN2
- Bob 4,61,114,SP+1-AN2
- Bob 5,83,114,SP+1-AN2
- Bob 6,197,110,SP+4+AN2
- End If
- Bob 7,40,144,78+AN3
- Bob Draw
- If Timer<3 Then For AA=1 To 3-Timer : Wait Vbl : Next
- Screen Swap : Timer=0 : Wait Vbl
- Bob Clear
- Put Block 1
- X=Sin(A-4)*30 : Y=Cos(A-4)*18
- Ink 16 : Draw 134,166 To 134+X,166-Y
- X=Sin(A-2)*30 : Y=Cos(A-2)*18
- Ink 15 : Draw 134,166 To 134+X,166-Y
- X=Sin(A)*30 : Y=Cos(A)*18
- Ink 14 : Draw 134,166 To 134+X,166-Y
- Loop
- Amal Off
- Sprite Off
- Bob Off
- Bob Update On
- Autoback 2
- Screen Close 1
- Return
- '
- INVADE:
- BANKLADEN["000Erde.pic"]
- Wait Vbl : Unpack BANK To 1 : Screen Hide 1
- Screen Offset 1,160,0
- Screen 0 : Get Palette 1 : Screen 1
- For A=0 To 31 : Colour A,0 : Next : Screen Show 1
- Double Buffer
- Screen 1
- Wait Vbl
- Fade 2 To 0 : Wait 33
- Screen 2
- Cls 0 : Home : TEX["IM JAHRE 2045 GREIFT EIN"] : Print : Print
- TEX["GIGANTISCHES RAUMSCHIFF DIE ERDE AN!"]
- Fade 2,0,$55D,$FFF
- Screen 1
- X=3360 : Y=6400 : S=32
- Set Bob 1,0,%11111,
- Autoback 0
- For A=0 To 129
- Wait Vbl : Timer=0
- Bob 1,X/32+50,Y/32,4
- Bob 2,X/32,Y/32+40,5
- T=Timer
- Repeat
- Add X,S/2 : Add Y,-S
- Dec T
- Until T<1
- If A>95 Then S=Max(S-1,1)
- Next
- Put Bob 1
- Put Bob 2
- Bob Off 1 : Bob Off 2
- X=2930 : Y=1460 : XX=X
- For A=0 To 14
- If A=1 or A=3 or A=6 or A=10 Then Add Y,20 : Add X,-30 : XX=X
- SH(A,0)=1900+Rnd(150) : SH(A,1)=1700
- SH(A,2)=XX : SH(A,3)=Y
- SH(A,4)=-Rnd(15)-5 : SH(A,5)=Rnd(10)+20
- SH(A,6)=Rnd(12)
- Add XX,40
- Next
- Bob Update Off
- AA=0
- Repeat
- Bob Draw : Screen Swap
- Wait Vbl
- For A=0 To 14
- If SH(A,6)=0
- Bob A,SH(A,0)/10,SH(A,1)/10,84
- Add SH(A,0),SH(A,4)
- Add SH(A,1),SH(A,5)
- If Abs(SH(A,2)-SH(A,0))<100 : SH(A,4)=(SH(A,2)-SH(A,0))/5 : End If
- If Abs(SH(A,3)-SH(A,1))<100 : SH(A,5)=(SH(A,3)-SH(A,1))/5 : End If
- If Abs(SH(A,2)-SH(A,0))>200 : Add SH(A,4),Sgn(SH(A,2)-SH(A,0)) : End If
- If Abs(SH(A,3)-SH(A,1))>200 : Add SH(A,5),Sgn(SH(A,3)-SH(A,1)) : End If
- Else
- Dec SH(A,6)
- End If
- Next
- Inc AA
- If AA=94
- For A=0 To 14
- SH(A,0)=SH(A,2) : SH(A,1)=SH(A,3)
- Add SH(A,2),600 : Add SH(A,3),-950
- Next
- End If
- If AA=110 Then Screen 2 : Fade 2 : Screen 1
- If AA=130 Then Fade 3
- Bob Clear
- Until AA=160
- Bob Off
- Bob Update On
- Screen Close 1
- Return
- '
- STADTZOOM:
- BANKLADEN["000StadtZoom.pic"]
- Wait Vbl : Unpack BANK To 1 : Screen Hide 1
- Screen 0 : Get Palette 1 : Screen 1
- For A=0 To 31 : Colour A,0 : Next : Screen Show 1
- Double Buffer
- Autoback 0
- Screen 2
- Cls 0 : Home : TEX["DIE ERDE KANN SICH"] : Print : Print
- TEX["NICHT VERTEIDIGEN!"]
- Screen 1
- Wait Vbl
- Fade 2 To 0
- A=0 : AA=0
- For AA=0 To 57
- Add A,1,-10 To 10
- Bob 1,185,79,1+Abs(A)
- Wait 5
- If AA=7 Then Screen 2 : Fade 2,0,$55D,$FFF : Screen 1
- If AA=40 Then Screen 2 : Fade 2 : Screen 1
- If AA=47 Then Fade 3
- Next
- Bob Off
- Autoback 2
- Screen Close 1
- Return
- '
- STADT:
- BANKLADEN["000Stadt1.pic"]
- Wait Vbl : Unpack BANK To 1 : Screen Hide 1
- Screen 0 : Get Palette 1 : Screen 1
- Screen Display 1,128,40,,
- For A=0 To 31 : Colour A,0 : Next : Screen Show 1
- Double Buffer
- Autoback 0
- Screen 2
- Cls 0 : Home : TEX["TAUSENDE RAUMSCHIFFE"] : Print : Print
- TEX["VERW�STEN DIE ST�DTE!"]
- Screen 1
- Wait Vbl
- Fade 2 To 0
- For Y=200 To -150 Step -8
- Timer=0
- Bob 1,150-Y/2,Y,1
- If Y=72 Then Screen 2 : Fade 2,0,$55D,$FFF : Screen 1
- Wait Vbl
- If Timer<2 Then For AA=1 To 2-Timer : Wait Vbl : Next
- Next
- Wait 40
- For Y=-17 To 119
- Bob 1,270-Y/2,Y,2
- Bob 2,230-Y/2,Y-40,2
- Bob 3,250-Y/2,Y-20,2
- Wait 2
- If Y=70 Then Screen 2 : Fade 2 : Screen 1
- If Y=90 Then Fade 3
- Next
- Bob Off
- Autoback 2
- Screen Close 1
- Return
- '
- STADTDESTROYED:
- BANKLADEN["000Stadt2.pic"]
- Wait Vbl : Unpack BANK To 1 : Screen Hide 1
- Screen 0 : Get Palette 1 : Screen 1
- Screen Display 1,128,40,,
- For A=0 To 31 : Colour A,0 : Next : Screen Show 1
- Double Buffer
- Autoback 0
- Screen 2
- Cls 0 : Home : TEX["NACH MONATEN DES KRIEGES"] : Print : Print
- TEX["MUSS DIE ERDE AUFGEBEN!"]
- Screen 1
- Wait Vbl
- Fade 2 To 0
- A1=2 : Y1=120 : X1=0 : EL1=0
- A2=2 : Y2=120 : X2=0 : EL2=20
- W=0
- Repeat
- If EL1=0
- Bob 1,125-X1,Y1,2+A1/2
- Bob 2,140,Y1-(60-(Y1/2)),2+A1/2
- Bob 3,155+X1,Y1,2+A1/2
- Add Y1,-A1/10-1
- Add X1,A1/18
- A1=Min(A1+1,49)
- Else
- Dec EL1
- End If
- If EL2=0
- Bob 4,125-X2,Y2,2+A2/2
- Bob 5,140,Y2-(60-(Y2/2)),2+A2/2
- Bob 6,155+X2,Y2,2+A2/2
- Add Y2,-A2/10-1
- Add X2,A2/18
- A2=Min(A2+1,49)
- Else
- Dec EL2
- End If
- Wait Vbl
- Inc W
- If W=5 Then Flash 2,"(800,1)(B30,1)(F60,1)(B30,1)" : Flash 17,"(FB2,1)(FD4,1)(FF8,1)(FD4,1)"
- If W=20 Then Screen 2 : Fade 2,0,$55D,$FFF : Screen 1
- If W=120 Then Screen 2 : Fade 2 : Screen 1
- If W=139 Then Flash Off
- If W=140 Then Fade 3
- If Y1<-36 Then A1=2 : Y1=120 : X1=0
- If Y2<-36 Then A2=2 : Y2=120 : X2=0
- Until W>160
- Bob Off
- Autoback 2
- Screen Close 1
- Return
- '
- Procedure BANKLADEN[NAME$]
- Shared BANKFELD$(),BANKSPACE
- FILENAME$=Mid$(NAME$,4)
- For A=0 To 4
- If Mid$(BANKFELD$(A),4)=FILENAME$ Then BANK=A+11 : Pop Proc
- Next
- If Exist(FILENAME$)=0 Then Boom : Pop Proc
- Open In 1,FILENAME$ : LAENGE=Lof(1) : Close 1
- For AA=0 To 4
- GESAMMT=0
- For A=0 To 4
- Add GESAMMT,Length(A+11)
- Next
- If GESAMMT+LAENGE<BANKSPACE Then Exit
- MXPRI=999
- For A=0 To 4
- PRI=Val(Left$(BANKFELD$(A),4))
- If PRI<MXPRI Then MXPRI=PRI : DEL=A
- Next
- Erase DEL+11
- Next
- For A=0 To 4
- If Length(A+11)=0 Then DEL=A : Exit
- Next
- If A=10
- MXPRI=999
- For A=0 To 4
- PRI=Val(Left$(BANKFELD$(A),4))
- If PRI<MXPRI
- MXPRI=PRI : DEL=A
- End If
- Next
- Erase DEL+11
- End If
- Load FILENAME$,DEL+11
- BANKFELD$(DEL)=NAME$
- BANK=DEL+11
- End Proc
- Procedure BANKLOESCHEN[FILENAME$]
- Shared BANKFELD$()
- DEL=0
- For A=0 To 4
- If Mid$(BANKFELD$(A),4)=FILENAME$ Then DEL=A : Exit
- Next
- If A=5 Then Boom : Pop Proc
- Erase DEL+11
- BANKFELD$(DEL)="000"
- End Proc
- Procedure ALLESLOESCHEN
- Shared BANKFELD$()
- For A=0 To 4
- Erase A+11
- BANKFELD$(DEL)="000"
- Next
- End Proc
- Procedure TEX[T$]
- Y=Y Curs*8+7 : X=160-Len(T$)*4
- Ink 1,0 : Text X-1,Y-1,T$ : Text X,Y-1,T$ : Text X+1,Y-1,T$
- Text X-1,Y,T$ : Text X+1,Y,T$ : Text X-1,Y+1,T$ : Text X,Y+1,T$
- Text X+1,Y+1,T$ : Ink 2,0 : Text X,Y,T$
- End Proc